package blatt5;

import dap.sortieren;
import dap.util;

public class Aufgabe1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int size = 0;
		int[] array;
		
		try {
			if (args.length >= 1) {
				size = Math.abs(Integer.parseInt(args[0]));	// Übergabeparameter einlesen
				
				assert size > 0 : "Size kleinergleich 0";
				
				if (size <= 0) {
					throw new Exception();			// Anzahl <= 0
				}
			} else  {
				throw new Exception();				// Weniger als 1 Parameter -> Error
			} 
		} catch (Exception ex) {
			help_terminate();						// Hilfe ausgeben und terminieren
		}
		
		array = dap.util.arrCreate(size, "rand");	// Array generieren
		int[] clonea = array.clone(), 
				cloneb = array.clone(), 
				clonec = array.clone();
		
		//dap.util.printArray (array);
		
		util.startMessung("Quicksort");
		sortieren.quicksort(clonea);				// Quicksort anwenden
		assert dap.sortieren.isSorted(clonea) : "Quicksort hat mist gemacht!";
		System.out.format("Sortiert: %b, Laufzeit Quicksort: %dms\n", sortieren.isSorted(clonea), util.stopMessung("Quicksort"));

		System.gc();
		
		util.startMessung("Mergesort");
		sortieren.mergeSort(cloneb);				// Mergesort anwenden
		assert dap.sortieren.isSorted(clonea) : "Mergesort hat mist gemacht!";
		System.out.format("Sortiert: %b, Laufzeit Mergesort: %dms\n", sortieren.isSorted(cloneb), util.stopMessung("Mergesort"));
		
		System.gc();
		
		util.startMessung("Bubblesort");
		sortieren.bubbleSort(clonec);				// Bubblesort anwenden
		assert dap.sortieren.isSorted(clonea) : "Bubblesort hat mist gemacht!";
		System.out.format("Sortiert: %b, Laufzeit Bubblesort: %dms\n", sortieren.isSorted(clonec), util.stopMessung("Bubblesort"));

		System.gc();
		
		System.out.println();
		System.out.format("Alle Sortieralgorithmen und Ausgaben bei %d Zahlen nach %dms durchgelaufen.\n", size, util.getMessung("Quicksort,Bubblesort,Mergesort"));

		
	}
	
	public static void help_terminate() {
		System.out.println("Es muss ein Eingabeparameter - die Anzahl der Elemente im Array - übergeben werden.");
		System.out.println("Beispiel: java Quicksort 15");
		System.exit(1);
	}

}
